var categoryService = require('../categoryService');


module.exports.setCallers = function (app) {
    
    //Obtener todas las categorías
    app.get('/category/getAll', function(req,res) {
        res.writeHead(200, {"Content-Type": "text/javascript"});
        categoryService.getAll(req.query.short, function(err, data) {
            if (err) 
                res.write(JSON.stringify(err));
            else
                res.write(JSON.stringify(data));
            res.end();
        });
    });

    //Buscar categorías por filtros
    app.get('/category/find', function(req,res) {
        try {
            res.writeHead(200, {"Content-Type": "text/javascript"});
            categoryService.find(JSON.parse(req.query.filters), function(err, data) {
                if (err) 
                    res.write(JSON.stringify(err));
                else
                    res.write(JSON.stringify(data));
                res.end();
            });
        } catch (err) {
            console.log("ERROR: " + err);
            res.write(JSON.stringify(err));
            res.end();
        }
    });

    //Buscar una categoría por filtros
    app.get('/category/findOne', function(req,res) {
        try {
            res.writeHead(200, {"Content-Type": "text/javascript"});
            categoryService.findOne(JSON.parse(req.query.filters), function(err, data) {
                if (err) 
                    res.write(JSON.stringify(err));
                else
                    res.write(JSON.stringify(data));
                res.end();
            });
        } catch (err) {
            console.log("ERROR: " + err);
            res.write(JSON.stringify(err));
            res.end();
        }
    });

    //Guardar / actualizar una categoría
    app.get('/category/save', function(req,res) {
        try {
            res.writeHead(200, {"Content-Type": "text/javascript"});
            categoryService.save(JSON.parse(req.query.category), function(err, data) {
                if (err) 
                    res.write(JSON.stringify(err));
                else
                    res.write(JSON.stringify(data));
                res.end();
            });
        } catch (err) {
            console.log("ERROR: " + err);
            res.write(JSON.stringify(err));
            res.end();
        }
    });

    //Eliminar una categoría
    app.get('/category/remove', function(req,res) {
        try {
            res.writeHead(200, {"Content-Type": "text/javascript"});
            categoryService.remove(JSON.parse(req.query.category).id, function(err, data) {
                if (err) 
                    res.write(JSON.stringify(err));
                else
                    res.write(JSON.stringify("Success"));
                res.end();
            });
        } catch (err) {
            console.log("ERROR: " + err);
            res.write(JSON.stringify(err));
            res.end();
        }
    });

}